package rtool

import (
	"math/rand"
	"strconv"
	"strings"
	"time"
)

var randSource = rand.New(rand.NewSource(time.Now().UnixNano())) //随机种子

// ParseRangeInt 解析数字范围
// str：str可以是固定的数字也可以是范围，比如 1000 或 1000-2000
// 解析失败的话，返回0；
// 如果是范围性的，就返回这个范围内的随机数
func ParseRangeInt(str string) int {
	if str == "" || str == "0" {
		return 0
	}
	if strings.Contains(str, "-") {
		//范围性
		split := strings.Split(str, "-")
		if len(split) >= 2 {
			_min, _ := strconv.Atoi(split[0])
			_max, _ := strconv.Atoi(split[1])
			if _min <= 0 {
				_min = 0
			}
			if _max <= 0 {
				_max = 0
			}
			if _min < _max && _max > 0 {
				time.Sleep(time.Millisecond)
				return randSource.Intn(_max-_min) + _min
			}
		}
	} else {
		num, _ := strconv.Atoi(str)
		if num > 0 {
			return num
		}
	}
	return 0
}
